#ifndef FILTER_H
#define FILTER_H

#include "media/media_gpu.h"
#include "media/media_cpu.h"
#include "maximo/maximo_cpu.h"
#include "maximo/maximo_gpu.h"
#include "minimo/minimo_cpu.h"
#include "minimo/minimo_gpu.h"

float gaussFunction(int x,int y,float sigmaSqr);
void convolutionMatrix(float* result, int kx, int ky, float sigmaSqr, bool normalize);
/**
 * makes a copy of an uchar4's array
 * @param a original array
 * @param width size X
 * @param height size Y
 * @return a copy of a
 */
uchar4* copy(uchar4* a, int width, int height);
/**
 * compare the time between cpu and gpu algorithms
 * @param img
 * @param width integer that represents the width of the image
 * @param height integer that represents the height of the image
 * @param dims
 * @param pixelsPerThread integer that represents how match pixels a thread has to work with
 */
void compareMedia(uchar4* img, int width, int height, int* dims, int pixelsPerThread);
/**
 * compare the time between cpu and gpu algorithms
 * @param img
 * @param width integer that represents the width of the image
 * @param height integer that represents the height of the image
 * @param dims
 * @param pixelsPerThread integer that represents how match pixels a thread has to work with
 */
void compararFiltro(uchar4* img, int width, int height, int* dims, int pixelsPerThread,int op);
#endif
